import { ROW_HEIGHT, getLastYeatTimespan, getToday } from '../utils';

const initMaxDate = (() => {
  const now = getToday();
  return new Date(
    now.getFullYear(),
    now.getMonth() + 6,
    now.getDate()
  ).getTime();
})();

export default {
  // 头部标题
  title: {
    type: String,
    value: '哈哈哈',
  },
  // 激活主题色
  color: {
    type: String,
    value: '#0064ff'
  },
  // 日期格式化函数，用于自定义day
  formatter: null,
  // 确定文字
  confirmText: {
    type: String,
    value: '确定',
  },
  // 禁用状态时的文字
  confirmDisabledText: {
    type: String,
    value: '确定',
  },
  // 范围选择超过最多可选天数时的提示文案
  rangePrompt: String,
  // 范围选择超过最多可选天数时，是否展示提示文案
  showRangePrompt: {
    type: Boolean,
    value: true,
  },
  // 是否允许日期范围的起止时间为同一天
  allowSameDay: Boolean,
  // 日历选择类型: single-选择单个；multiple-多选；range-区间选择
  type: {
    type: String,
    value: 'single',
    observer: 'reset',
  },
  // 可选择的最小日期
  minDate: {
    type: Number,
    value: getLastYeatTimespan(),
  },
  // 可选择的最大日期
  maxDate: {
    type: Number,
    value: initMaxDate,
  },
  // 日历弹窗位置
  position: {
    type: String,
    value: 'bottom',
  },
  // 单个day行高
  rowHeight: {
    type: null,
    value: ROW_HEIGHT,
  },
  // 是否有圆角
  round: {
    type: Boolean,
    value: true,
  },
  // 是否以弹层的形式展示日历
  poppable: {
    type: Boolean,
    value: true,
  },
  // 是否显示月份背景水印
  showMark: {
    type: Boolean,
    value: true,
  },
  // 是否展示title
  showTitle: {
    type: Boolean,
    value: true,
  },
  // 是否展示确认按钮
  showConfirm: {
    type: Boolean,
    value: true,
  },
  // 是否展示副标题（年月）
  showSubtitle: {
    type: Boolean,
    value: true,
  },
  // 是否开启底部安全区适配（主要兼容各种奇怪屏手机）
  safeAreaInsetBottom: {
    type: Boolean,
    value: true,
  },
  // 是否在点击遮罩层后关闭
  closeOnClickOverlay: {
    type: Boolean,
    value: true,
  },
  // 日期最多可选天数
  maxRange: {
    type: null,
    value: null,
  },
  // 日期最少可选天数
  minRange: {
    type: Number,
    value: 1,
  },
  // 周起始日
  firstDayOfWeek: {
    type: Number,
    value: 0,
  },
  // 是否只读
  readonly: Boolean,
  // 是否可以滚动
  enableScroll: {
    type: Boolean,
    value: false,
  },
}